Skip to content

feat(ai): integrate Vertex AI Gemini with MCP for code analysis#25

Merged
Yosoyepa merged 4 commits intodevelopfrom
feature/CGAI-32-Integration-GenerativeAI
Dec 4, 2025
Merged

feat(ai): integrate Vertex AI Gemini with MCP for code analysis#25
Yosoyepa merged 4 commits intodevelopfrom
feature/CGAI-32-Integration-GenerativeAI

Conversation

@Yosoyepa
Copy link
Owner

@Yosoyepa Yosoyepa commented Dec 4, 2025

📝 Descripción

Implementación completa de Sprint 3: IA Generativa integrando Google Vertex AI (Gemini) con el Model Context Protocol (MCP) para análisis de código inteligente.

Componentes Principales:

  • GeminiClient: Cliente para Vertex AI con soporte para modelos gemini-1.5-flash-001 (dev) y gemini-1.5-pro-001 (prod)
  • MCPConfig: Implementación del Model Context Protocol con contextos de seguridad OWASP Top 10
  • AIService: Servicio orquestador que combina análisis de agentes con sugerencias de IA generativa
  • SecurityContext: Dataclass para prompts estructurados con categorías OWASP

Fixes Adicionales:

  • Autenticación Clerk con JWT Templates (HS256)
  • Enum Severity con valores UPPERCASE
  • Claim JWT estándar sub en lugar de user_id

🎯 Historia de Usuario Relacionada

Closes #32 (CGAI-32: Integration Generative AI - Vertex AI + MCP)

🧪 Cómo se Probó

  • Tests unitarios para GeminiClient (mock de Vertex AI)
  • Tests unitarios para MCPConfig y SecurityContext
  • Tests unitarios para AIService
  • Tests de integración para auth router con nuevo claim sub
  • Prueba manual de autenticación Clerk con JWT HS256
  • Verificación de conexión con Vertex AI en GCP
  • Cobertura total: 88%+ (cumple umbral 75%)

✅ Checklist Previo al Merge

  • Mi código sigue las convenciones del proyecto
  • He agregado tests que prueban mis cambios
  • Todos los tests pasan localmente (pytest)
  • He actualizado la documentación relevante
  • Mis commits siguen Conventional Commits
  • He hecho rebase con develop
  • He ejecutado linting localmente (flake8 passing)
  • He verificado coverage >75%

📁 Archivos Modificados

Nuevos Archivos

Archivo Descripción
src/services/ai_service.py Servicio principal de IA Generativa
src/external/gemini_client.py Cliente para Vertex AI Gemini
src/config/mcp_config.py Configuración MCP con OWASP Top 10
tests/test_ai_service.py Tests unitarios para componentes AI

Archivos Modificados

Archivo Cambio
src/external/clerk_client.py Soporte HS256 + JWT_SIGNING_KEY
src/services/auth_service.py Usar claim sub del JWT
src/core/settings.py Añadir CLERK_JWT_SIGNING_KEY
src/schemas/finding.py Severity enum UPPERCASE
src/agents/security_agent.py Severity sorting UPPERCASE
src/agents/quality_agent.py Severity sorting UPPERCASE
tests/unit/external/test_clerk_client.py Tests para HS256
tests/unit/services/test_auth_service.py Tests con claim sub
tests/integration/test_auth_router.py Mock con claim sub

🔧 Configuración Requerida

# Vertex AI (GCP)
GCP_PROJECT_ID=your-project-id
GCP_LOCATION=us-central1
GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json

# Clerk JWT (HS256)
CLERK_JWT_SIGNING_KEY=your-jwt-signing-key

<html>
<body>
<!--StartFragment--><h2 style="line-height: normal; font-size: 16.003px; font-weight: 600; margin: 16px 0px 8px; font-family: &quot;Segoe WPC&quot;, &quot;Segoe UI&quot;, sans-serif; color: rgb(142, 153, 177); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(33, 37, 43); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">⚠️ Breaking Changes</h2>
Cambio | Impacto | Migración
-- | -- | --
Severity enum UPPERCASE | Datos existentes con lowercase fallarán validación | Migrar datos: UPDATE findings SET severity = UPPER(severity)
JWT claim sub | Código que use user_id fallará | Actualizar a payload.get("sub")

<!--EndFragment-->
</body>
</html>


📚 Notas Adicionales
Modelos AI: Usa gemini-1.5-flash-001 en desarrollo para menor latencia y costo
MCP: Implementa 10 contextos de seguridad OWASP (A01-A10:2021)
Autenticación: Compatible con Clerk Custom JWT Templates
GCP: Requiere service account con permisos de Vertex AI User
🔗 Referencias
Vertex AI Gemini Documentation
OWASP Top 10 2021
Clerk JWT Templates
Model Context Protocol

Yosoyepa and others added 4 commits December 4, 2025 05:51
- Add GeminiClient for Vertex AI integration with gemini-1.5-flash/pro models
- Implement Model Context Protocol (MCP) with OWASP Top 10 security contexts
- Create AIService as orchestrator for AI-powered code analysis
- Add SecurityContext dataclass for structured prompt engineering
- Fix Clerk JWT authentication to support HS256 with Custom JWT Templates
- Update auth_service to use standard 'sub' claim from JWT payload
- Fix Severity enum to use uppercase values matching database schema
- Add comprehensive unit tests for AI components (88%+ coverage)
- Configure GCP credentials for Vertex AI authentication

BREAKING CHANGE: Severity enum values changed from lowercase to UPPERCASE

Closes CGAI-32
- Change severity ordering list from lowercase to UPPERCASE in performance_agent.py
- Update expected_order in integration test to match Severity enum values
- Fixes ValueError: 'HIGH' is not in list during findings sorting

The Severity enum uses UPPERCASE values ('CRITICAL', 'HIGH', etc.) but the
sorting list used lowercase, causing index lookup failures.

Fixes 2 failing tests:
- test_comprehensive_performance_detection
- test_detect_triple_nested_loops_critical
@Yosoyepa Yosoyepa merged commit 4167084 into develop Dec 4, 2025
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants